ORGANIZATION_BLOCK OB 1
BEGIN
	// Check ANY pointer parameters
	CALL		FC 1 (
		FCANY1		:= P#M 10.0 BYTE 7,
		FCANY2		:= P#M 11.1 BOOL 13,
		FCANY3		:= M 12.2,
		FCANY4		:= P#DB50.DBX 10.0 DWORD 8,
		FCANY5		:= DB50.DBD 10,
		FCANY6		:= P#DBX 20.2 WORD 7,
		FCANY7		:= DB100.DBVAR2[2].V2,
		FCANY8		:= P#DB100.DBVAR2[2].V2, // awlsim extension
		FCANY9		:= P#DB100.DBVAR3, // awlsim extension
		FCANY10		:= P#DB100.DBVAR4, // awlsim extension
		FCOUTANY1	:= M 98.1,
		RET_VAL		:= A 97.6,
	)
	CALL		FB 1, DB 1 (
		FBANY1		:= P#M 10.0 BYTE 7,
		FBANY2		:= P#M 11.1 BOOL 13,
		FBANY3		:= M 12.2,
		FBANY4		:= P#DB50.DBX 10.0 DWORD 8,
		FBANY5		:= DB50.DBD 10,
		FBANY6		:= P#DBX 20.2 WORD 7,
		FBANY7		:= DB100.DBVAR2[2].V2,
		FBANY8		:= P#DB100.DBVAR2[2].V2, // awlsim extension
		FBANY9		:= P#DB100.DBVAR3, // awlsim extension
		FBANY10		:= P#DB100.DBVAR4, // awlsim extension
	)


	CALL SFC 46 // STOP CPU
END_ORGANIZATION_BLOCK


DATA_BLOCK DB 100
	STRUCT
		DBVAR1		: INT;
		DBVAR2		: ARRAY[1 .. 6] of STRUCT
			V1	: INT;
			V2	: INT;
		END_STRUCT;
		DBVAR3		: ARRAY[1 .. 4] of STRUCT
			A1	: INT;
		END_STRUCT
		DBVAR4		: ARRAY[1 .. 8] of BYTE;
	END_STRUCT;
BEGIN
END_DATA_BLOCK


FUNCTION FC 1 : ANY
	VAR_INPUT
		FCANY1		: ANY;
		FCANY2		: ANY;
		FCANY3		: ANY;
		FCANY4		: ANY;
		FCANY5		: ANY;
		FCANY6		: ANY;
		FCANY7		: ANY;
		FCANY8		: ANY;
		FCANY9		: ANY;
		FCANY10		: ANY;
	END_VAR
	VAR_OUTPUT
		FCOUTANY1	: ANY;
	END_VAR
BEGIN
	L		P##FCANY1
	LAR1
	UD		DW#16#FF000000
	__ASSERT==	__ACCU 1,	DW#16#87000000
	L		B [AR1, P#0.0]
	__ASSERT==	__ACCU 1,	B#16#10	// S7
	L		B [AR1, P#1.0]
	__ASSERT==	__ACCU 1,	B#16#02	// BYTE
	L		W [AR1, P#2.0]
	__ASSERT==	__ACCU 1,	7	// count
	L		W [AR1, P#4.0]
	__ASSERT==	__ACCU 1,	0	// DB
	L		D [AR1, P#6.0]
	__ASSERT==	__ACCU 1,	P#M 10.0

	L		P##FCANY2
	LAR1
	UD		DW#16#FF000000
	__ASSERT==	__ACCU 1,	DW#16#87000000
	L		B [AR1, P#0.0]
	__ASSERT==	__ACCU 1,	B#16#10	// S7
	L		B [AR1, P#1.0]
	__ASSERT==	__ACCU 1,	B#16#01	// BOOL
	L		W [AR1, P#2.0]
	__ASSERT==	__ACCU 1,	13	// count
	L		W [AR1, P#4.0]
	__ASSERT==	__ACCU 1,	0	// DB
	L		D [AR1, P#6.0]
	__ASSERT==	__ACCU 1,	P#M 11.1

	L		P##FCANY3
	LAR1
	UD		DW#16#FF000000
	__ASSERT==	__ACCU 1,	DW#16#87000000
	L		B [AR1, P#0.0]
	__ASSERT==	__ACCU 1,	B#16#10	// S7
	L		B [AR1, P#1.0]
	__ASSERT==	__ACCU 1,	B#16#01	// BOOL
	L		W [AR1, P#2.0]
	__ASSERT==	__ACCU 1,	1	// count
	L		W [AR1, P#4.0]
	__ASSERT==	__ACCU 1,	0	// DB
	L		D [AR1, P#6.0]
	__ASSERT==	__ACCU 1,	P#M 12.2

	L		P##FCANY4
	LAR1
	UD		DW#16#FF000000
	__ASSERT==	__ACCU 1,	DW#16#87000000
	L		B [AR1, P#0.0]
	__ASSERT==	__ACCU 1,	B#16#10	// S7
	L		B [AR1, P#1.0]
	__ASSERT==	__ACCU 1,	B#16#06	// DWORD
	L		W [AR1, P#2.0]
	__ASSERT==	__ACCU 1,	8	// count
	L		W [AR1, P#4.0]
	__ASSERT==	__ACCU 1,	50	// DB
	L		D [AR1, P#6.0]
	__ASSERT==	__ACCU 1,	P#DBX 10.0

	L		P##FCANY5
	LAR1
	UD		DW#16#FF000000
	__ASSERT==	__ACCU 1,	DW#16#87000000
	L		B [AR1, P#0.0]
	__ASSERT==	__ACCU 1,	B#16#10	// S7
	L		B [AR1, P#1.0]
	__ASSERT==	__ACCU 1,	B#16#06	// DWORD
	L		W [AR1, P#2.0]
	__ASSERT==	__ACCU 1,	1	// count
	L		W [AR1, P#4.0]
	__ASSERT==	__ACCU 1,	50	// DB
	L		D [AR1, P#6.0]
	__ASSERT==	__ACCU 1,	P#DBX 10.0

	L		P##FCANY6
	LAR1
	UD		DW#16#FF000000
	__ASSERT==	__ACCU 1,	DW#16#87000000
	L		B [AR1, P#0.0]
	__ASSERT==	__ACCU 1,	B#16#10	// S7
	L		B [AR1, P#1.0]
	__ASSERT==	__ACCU 1,	B#16#04	// WORD
	L		W [AR1, P#2.0]
	__ASSERT==	__ACCU 1,	7	// count
	L		W [AR1, P#4.0]
	__ASSERT==	__ACCU 1,	0	// DB
	L		D [AR1, P#6.0]
	__ASSERT==	__ACCU 1,	P#DBX 20.2

	L		P##FCANY7
	LAR1
	UD		DW#16#FF000000
	__ASSERT==	__ACCU 1,	DW#16#87000000
	L		B [AR1, P#0.0]
	__ASSERT==	__ACCU 1,	B#16#10	// S7
	L		B [AR1, P#1.0]
	__ASSERT==	__ACCU 1,	B#16#05	// INT
	L		W [AR1, P#2.0]
	__ASSERT==	__ACCU 1,	1	// count
	L		W [AR1, P#4.0]
	__ASSERT==	__ACCU 1,	100	// DB
	L		D [AR1, P#6.0]
	__ASSERT==	__ACCU 1,	P#DBX 8.0

	L		P##FCANY8
	LAR1
	UD		DW#16#FF000000
	__ASSERT==	__ACCU 1,	DW#16#87000000
	L		B [AR1, P#0.0]
	__ASSERT==	__ACCU 1,	B#16#10	// S7
	L		B [AR1, P#1.0]
	__ASSERT==	__ACCU 1,	B#16#05	// INT
	L		W [AR1, P#2.0]
	__ASSERT==	__ACCU 1,	1	// count
	L		W [AR1, P#4.0]
	__ASSERT==	__ACCU 1,	100	// DB
	L		D [AR1, P#6.0]
	__ASSERT==	__ACCU 1,	P#DBX 8.0

	L		P##FCANY9
	LAR1
	UD		DW#16#FF000000
	__ASSERT==	__ACCU 1,	DW#16#87000000
	L		B [AR1, P#0.0]
	__ASSERT==	__ACCU 1,	B#16#10	// S7
	L		B [AR1, P#1.0]
	__ASSERT==	__ACCU 1,	B#16#06	// DWORD
	L		W [AR1, P#2.0]
	__ASSERT==	__ACCU 1,	2	// count
	L		W [AR1, P#4.0]
	__ASSERT==	__ACCU 1,	100	// DB
	L		D [AR1, P#6.0]
	__ASSERT==	__ACCU 1,	P#DBX 26.0

	L		P##FCANY10
	LAR1
	UD		DW#16#FF000000
	__ASSERT==	__ACCU 1,	DW#16#87000000
	L		B [AR1, P#0.0]
	__ASSERT==	__ACCU 1,	B#16#10	// S7
	L		B [AR1, P#1.0]
	__ASSERT==	__ACCU 1,	B#16#02	// BYTE
	L		W [AR1, P#2.0]
	__ASSERT==	__ACCU 1,	8	// count
	L		W [AR1, P#4.0]
	__ASSERT==	__ACCU 1,	100	// DB
	L		D [AR1, P#6.0]
	__ASSERT==	__ACCU 1,	P#DBX 34.0



	L		P##FCOUTANY1
	LAR1
	UD		DW#16#FF000000
	__ASSERT==	__ACCU 1,	DW#16#87000000
	L		B [AR1, P#0.0]
	__ASSERT==	__ACCU 1,	B#16#10	// S7
	L		B [AR1, P#1.0]
	__ASSERT==	__ACCU 1,	B#16#01	// BOOL
	L		W [AR1, P#2.0]
	__ASSERT==	__ACCU 1,	1	// count
	L		W [AR1, P#4.0]
	__ASSERT==	__ACCU 1,	0	// DB
	L		D [AR1, P#6.0]
	__ASSERT==	__ACCU 1,	P#M 98.1



	L		P##RET_VAL
	LAR1
	UD		DW#16#FF000000
	__ASSERT==	__ACCU 1,	DW#16#87000000
	L		B [AR1, P#0.0]
	__ASSERT==	__ACCU 1,	B#16#10	// S7
	L		B [AR1, P#1.0]
	__ASSERT==	__ACCU 1,	B#16#01	// BOOL
	L		W [AR1, P#2.0]
	__ASSERT==	__ACCU 1,	1	// count
	L		W [AR1, P#4.0]
	__ASSERT==	__ACCU 1,	0	// DB
	L		D [AR1, P#6.0]
	__ASSERT==	__ACCU 1,	P#A 97.6
END_FUNCTION


FUNCTION_BLOCK FB 1
	VAR_INPUT
		FBANY1		: ANY;
		FBANY2		: ANY;
		FBANY3		: ANY;
		FBANY4		: ANY;
		FBANY5		: ANY;
		FBANY6		: ANY;
		FBANY7		: ANY;
		FBANY8		: ANY;
		FBANY9		: ANY;
		FBANY10		: ANY;
	END_VAR
BEGIN
	L		P##FBANY1
	LAR1
	UD		DW#16#FF000000
	__ASSERT==	__ACCU 1,	DW#16#85000000
	L		B [AR1, P#0.0]
	__ASSERT==	__ACCU 1,	B#16#10	// S7
	L		B [AR1, P#1.0]
	__ASSERT==	__ACCU 1,	B#16#02	// BYTE
	L		W [AR1, P#2.0]
	__ASSERT==	__ACCU 1,	7	// count
	L		W [AR1, P#4.0]
	__ASSERT==	__ACCU 1,	0	// DB
	L		D [AR1, P#6.0]
	__ASSERT==	__ACCU 1,	P#M 10.0

	L		P##FBANY2
	LAR1
	UD		DW#16#FF000000
	__ASSERT==	__ACCU 1,	DW#16#85000000
	L		B [AR1, P#0.0]
	__ASSERT==	__ACCU 1,	B#16#10	// S7
	L		B [AR1, P#1.0]
	__ASSERT==	__ACCU 1,	B#16#01	// BOOL
	L		W [AR1, P#2.0]
	__ASSERT==	__ACCU 1,	13	// count
	L		W [AR1, P#4.0]
	__ASSERT==	__ACCU 1,	0	// DB
	L		D [AR1, P#6.0]
	__ASSERT==	__ACCU 1,	P#M 11.1

	L		P##FBANY3
	LAR1
	UD		DW#16#FF000000
	__ASSERT==	__ACCU 1,	DW#16#85000000
	L		B [AR1, P#0.0]
	__ASSERT==	__ACCU 1,	B#16#10	// S7
	L		B [AR1, P#1.0]
	__ASSERT==	__ACCU 1,	B#16#01	// BOOL
	L		W [AR1, P#2.0]
	__ASSERT==	__ACCU 1,	1	// count
	L		W [AR1, P#4.0]
	__ASSERT==	__ACCU 1,	0	// DB
	L		D [AR1, P#6.0]
	__ASSERT==	__ACCU 1,	P#M 12.2

	L		P##FBANY4
	LAR1
	UD		DW#16#FF000000
	__ASSERT==	__ACCU 1,	DW#16#85000000
	L		B [AR1, P#0.0]
	__ASSERT==	__ACCU 1,	B#16#10	// S7
	L		B [AR1, P#1.0]
	__ASSERT==	__ACCU 1,	B#16#06	// DWORD
	L		W [AR1, P#2.0]
	__ASSERT==	__ACCU 1,	8	// count
	L		W [AR1, P#4.0]
	__ASSERT==	__ACCU 1,	50	// DB
	L		D [AR1, P#6.0]
	__ASSERT==	__ACCU 1,	P#DBX 10.0

	L		P##FBANY5
	LAR1
	UD		DW#16#FF000000
	__ASSERT==	__ACCU 1,	DW#16#85000000
	L		B [AR1, P#0.0]
	__ASSERT==	__ACCU 1,	B#16#10	// S7
	L		B [AR1, P#1.0]
	__ASSERT==	__ACCU 1,	B#16#06	// DWORD
	L		W [AR1, P#2.0]
	__ASSERT==	__ACCU 1,	1	// count
	L		W [AR1, P#4.0]
	__ASSERT==	__ACCU 1,	50	// DB
	L		D [AR1, P#6.0]
	__ASSERT==	__ACCU 1,	P#DBX 10.0

	L		P##FBANY6
	LAR1
	UD		DW#16#FF000000
	__ASSERT==	__ACCU 1,	DW#16#85000000
	L		B [AR1, P#0.0]
	__ASSERT==	__ACCU 1,	B#16#10	// S7
	L		B [AR1, P#1.0]
	__ASSERT==	__ACCU 1,	B#16#04	// WORD
	L		W [AR1, P#2.0]
	__ASSERT==	__ACCU 1,	7	// count
	L		W [AR1, P#4.0]
	__ASSERT==	__ACCU 1,	0	// DB
	L		D [AR1, P#6.0]
	__ASSERT==	__ACCU 1,	P#DBX 20.2

	L		P##FBANY7
	LAR1
	UD		DW#16#FF000000
	__ASSERT==	__ACCU 1,	DW#16#85000000
	L		B [AR1, P#0.0]
	__ASSERT==	__ACCU 1,	B#16#10	// S7
	L		B [AR1, P#1.0]
	__ASSERT==	__ACCU 1,	B#16#05	// INT
	L		W [AR1, P#2.0]
	__ASSERT==	__ACCU 1,	1	// count
	L		W [AR1, P#4.0]
	__ASSERT==	__ACCU 1,	100	// DB
	L		D [AR1, P#6.0]
	__ASSERT==	__ACCU 1,	P#DBX 8.0

	L		P##FBANY8
	LAR1
	UD		DW#16#FF000000
	__ASSERT==	__ACCU 1,	DW#16#85000000
	L		B [AR1, P#0.0]
	__ASSERT==	__ACCU 1,	B#16#10	// S7
	L		B [AR1, P#1.0]
	__ASSERT==	__ACCU 1,	B#16#05	// INT
	L		W [AR1, P#2.0]
	__ASSERT==	__ACCU 1,	1	// count
	L		W [AR1, P#4.0]
	__ASSERT==	__ACCU 1,	100	// DB
	L		D [AR1, P#6.0]
	__ASSERT==	__ACCU 1,	P#DBX 8.0

	L		P##FBANY9
	LAR1
	UD		DW#16#FF000000
	__ASSERT==	__ACCU 1,	DW#16#85000000
	L		B [AR1, P#0.0]
	__ASSERT==	__ACCU 1,	B#16#10	// S7
	L		B [AR1, P#1.0]
	__ASSERT==	__ACCU 1,	B#16#06	// DWORD
	L		W [AR1, P#2.0]
	__ASSERT==	__ACCU 1,	2	// count
	L		W [AR1, P#4.0]
	__ASSERT==	__ACCU 1,	100	// DB
	L		D [AR1, P#6.0]
	__ASSERT==	__ACCU 1,	P#DBX 26.0

	L		P##FBANY10
	LAR1
	UD		DW#16#FF000000
	__ASSERT==	__ACCU 1,	DW#16#85000000
	L		B [AR1, P#0.0]
	__ASSERT==	__ACCU 1,	B#16#10	// S7
	L		B [AR1, P#1.0]
	__ASSERT==	__ACCU 1,	B#16#02	// BYTE
	L		W [AR1, P#2.0]
	__ASSERT==	__ACCU 1,	8	// count
	L		W [AR1, P#4.0]
	__ASSERT==	__ACCU 1,	100	// DB
	L		D [AR1, P#6.0]
	__ASSERT==	__ACCU 1,	P#DBX 34.0
END_FUNCTION_BLOCK


DATA_BLOCK DB 1
	FB 1
BEGIN
END_DATA_BLOCK
